<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    function Dog(name, color) {
        this.name = name;
        this.color = color;
        this.seeDoor = function () {
            console.log(this.name + "站在门前对你叫：汪汪！")
        }
        this.eat = function () {
            console.log(this.name + "在吃饭");
        }
    }

    let wc = new Dog('旺财', '黄色');
    let lf = new Dog('来福', '白色');
    //创建相同对象的时候对于相同的方法会浪费空间
    wc.seeDoor();
    lf.eat();
    //使用原型解决
    //1、每一个构造函数天生具备一个 prototype 属性，指向自己的原型对象
    //2、每一个实例对象天生具备一个 __proto__ 属性，指向构造函数的原型
    //3、每一个原型天生具备一个constructor属性 指向构造函数本身

    function Student(id){
        this.id=id
    }
    //证明prototype属性存在
    console.log(Student.prototype);

    let s1=new Student(123);
    let s2=new Student(213)
    console.log(s1.__proto__);
    console.log(s1.__proto__==s2.__proto__);//true
    console.log(Student.prototype==s2.__proto__);//true

    console.log(s1.__proto__.constructor==Student);//true;

</script>